﻿using SS.Common.Map.Model;

namespace SS.Common.Map.MapProvider
{
    /// <summary>
    /// Defines Map providers 
    /// </summary>
    public enum EMap
    {
        Google,
        Ping
    }

    /// <summary>
    /// The interface is used to be as Map provider
    /// </summary>
    public interface IMapProvider
    {
        /// <summary>
        /// Get GEO location from input address
        /// <para>
        /// Output is the status code
        /// </para>
        /// </summary>
        /// <param name="rawAddress">Input address</param>
        /// <param name="status">Status code</param>
        /// <returns>Geo location from input address</returns>
        PointLatLng? GetPoint(string rawAddress, out GeoCoderStatusCode status);

        /// <summary>
        /// Get distance of 2 GEO points
        /// </summary>
        /// <param name="point1"></param>
        /// <param name="point2"></param>
        /// <returns></returns>
        double GetDistance(PointLatLng point1, PointLatLng point2);
    }
}
